package represent.expression;

import java.util.Collection;

import metadata.schema.Schema;

import represent.Plan;
import represent.Scan;
import represent.type.Type;

public abstract class Term {

	public abstract boolean isSatisfied(Scan s);

	public abstract int reductionFactor(Plan p);

	public abstract Type equatesWithConstant(String fldname);

	public abstract String equatesWithField(String fldname);

	public abstract boolean appliesTo(Schema schema);

	public abstract Collection<? extends String> getNeededFields();

	public abstract void addTableName(Schema schema);

	public abstract void expandAllFields(Schema upperLevelSchema);

}
